
//2364.统计坏数对的数目
class Solution {
public:
    long long countBadPairs(vector<int>& nums) {
        //正难则反
        //直接写j-i==nums[j]-nums[i]不好处理
        //但是如果求j-i==nums[j]-nums[i],即nums[j]-j=nums[i]-i此时就比较号处理了

        int n=nums.size();
        unordered_map<int,int> m; //存储左边所有数据的nums[i]-i的结果
        long long ret=0;
        for(int i=0;i<n;i++)
        {
            int diff=nums[i]-i;
            ret+=i;             //加上前面所有数据的个数
            if(m.count(diff)) ret-=m[diff] ;  //减去前面非坏数对的个数

            m[diff]++;
        }
        return ret;
    }
};